IAMをコード管理するMiamを使ってみた
Miamとは?
Miamとは、AWSアカウントのIAM情報をコード管理出来るツールです。
使い勝手はRoute53とほぼ同様なので、AWS環境をコード管理していると重宝出来ると思います。
GitHub
使い方
Miamをインストール
% gem build miam.gemspec % gem install miam-0.2.4.beta8.gem % gem list miam *** LOCAL GEMS *** miam (0.2.4.beta8)
※本記事執筆時、gem install miam
でインストールを行った所少し古いバージョンがインストールされ、
そのバージョンで作業を実施すると、パスワードポリシーのエラーが表示されました。
そのため、今回は0.2.4 beta8を使用しております。
Miamオプション
Usage: miam [options] -p, --profile PROFILE_NAME --credentials-path PATH -k, --access-key ACCESS_KEY -s, --secret-key SECRET_KEY -r, --region REGION -a, --apply -f, --file FILE --dry-run --account-output FILE -e, --export -o, --output FILE --split --split-more --format=FORMAT --export-concurrency N --target REGEXP --ignore-login-profile --no-color --no-progress --debug
IAM情報をエクスポート
IAM情報を一つのDSL or JSONファイルでエクスポートします。
DSL
% miam -e -o <エクスポートファイル名> Export IAM to `miam-export`
% tree . └── miam-export
JSON
% miam -e -o <エクスポートファイル名>
% miam -e --format=json -o <エクスポートファイル名> Export IAM to `miam-export.json`
各IAM情報をエクスポート
IAMユーザー、グループ、ロール、ポリシーレベルで情報を取得します。
DSL
% miam -e --split
. ├── IAMfile ├── groups.iam ├── policies.iam ├── roles.iam └── users.iam
JSON
% miam -e --split --format=json
. ├── groups.iam.json ├── instance_profiles.iam.json ├── policies.iam.json ├── roles.iam.json └── users.iam.json
詳細な各IAM要素で情報をエクスポート
IAMユーザー、グループ、ロール、ポリシーレベルの各項目レベルで情報を取得します。
DSL
% miam -e --split-more
. ├── IAMfile ├── groups │ └── xxxxxxxx.iam ├── policies │ ├── xxxxxxxx.iam │ ├── xxxxxxxx.iam │ └── xxxxxxxx.iam ├── roles │ ├── xxxxxxxx.iam │ ├── xxxxxxxx.iam │ ├── xxxxxxxx.iam │ └── xxxxxxxx.iam └── users ├── xxxxxxxx.iam ├── xxxxxxxx.iam └── xxxxxxxx.iam
JSON
% miam -e --split-more --format=json
. ├── groups │ └── xxxxxxxx.iam.json ├── policies │ ├── xxxxxxxx.iam.json │ ├── xxxxxxxx.iam.json │ └── xxxxxxxx.iam.json ├── roles │ ├── xxxxxxxx.iam.json │ ├── xxxxxxxx.iam.json │ ├── xxxxxxxx.iam.json │ └── xxxxxxxx.iam.json └── users ├── xxxxxxxx.iam.json ├── xxxxxxxx.iam.json └── xxxxxxxx.iam.json
IAM変更
DSL or JSONファイルをテスト実行する(dry-run)
% miam --dry-run -a -f <DSLファイル or JSONファイル>
DSL or JSONファイルを実行する
% miam -a -f <DSLファイル or JSONファイル>
最後に
使い方を記載していきましたが、多くのIAMユーザーやロールが作成されている環境で
アタッチ済みポリシーの確認などの情報整理には大きく貢献してくれるツールと思いました。